package ch4.SqString;

public class Exam4_2 {
    /**
     * 以字典顺序比较两个英文字母串s和t的大小
     * （1）先比较共同长度范围内的对应字符
     * （2）若共同长度内的字符都相同，再比较s和t的长度
     * @param s SqStringClass对象
     * @param t SqStringClass对象
     * @return 0：两者相同，>1：s的字符大于t的字符或s的长度大于t的长度，反之<1
     */
    public static int Strcmp(SqStringClass s, SqStringClass t) {
        int comlen = Math.min(s.size(), t.size());
        //if (s.size() < t.size()) {
        //    comlen = s.size();  //求s和t的共同长度
        //} else {
        //    comlen = t.size();
        //}
        for (int i = 0; i < comlen; i++) { //在共同长度内逐个字符比较
            if (s.data[i] > t.data[i]) {
                return 1;
            } else if (s.data[i] < t.data[i]) {
                return -1;
            }
        }
        if (s.size() == t.size()) {     //s==t
            return 0;
        } else if (s.size() > t.size()) {    //s>t
            return 1;
        } else {
            return -1;      //s<t
        }
    }
    public static int Strcmp1(SqStringClass s, SqStringClass t) {
        for (int i = 0; i < s.size() && i < t.size(); i++) {
            if (s.data[i] > t.data[i]) {
                return 1;
            } else if (s.data[i] < t.data[i]) {
                return -1;
            }
        }
        if (s.size() == t.size()) {
            return 0;
        }
        return s.size() > t.size() ? 1 : -1;
    }
    
    public static void main(String[] args) {
        char[] cstr1 = {'a', 'b', 'c'};
        char[] cstr2 = {'a', 'b', 'c'};
        SqStringClass s1 = new SqStringClass();
        s1.StrAssign(cstr1);
        System.out.println("s1: " + s1);
        SqStringClass s2 = new SqStringClass();
        s2.StrAssign(cstr2);
        System.out.println("s2: " + s2);

        int ans = Strcmp(s1, s2);
        if (ans == 1) {
            System.out.println("s1>s2");
        } else if (ans == 0) {
            System.out.println("s1==s2");
        } else {
            System.out.println("s1<s2");
        }
        System.out.println(Strcmp1(s1, s2));
    }
} 
